package cn.lingyangwl.agile.infra.module.file.model.entity;

import cn.lingyangwl.agile.model.BasePO;
import cn.lingyangwl.framework.mybatis.mate.annotations.FieldUnique;
import cn.lingyangwl.framework.mybatis.mate.annotations.FieldUniqueConfig;
import cn.lingyangwl.framework.mybatis.mate.enums.SqlConditionTypeEnum;
import cn.lingyangwl.framework.tool.core.StringUtils;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/**
 * 文件配置
 *
 * @author shenguangyang
 */
@Getter
@Setter
@TableName(value = "infra_file_config", autoResultMap = true)
@FieldUniqueConfig(sqlCondition = SqlConditionTypeEnum.AND)
public class FileConfig extends BasePO {
    @TableId(type = IdType.AUTO)
	private Long id;
	
	/**
	 * 业务类型
	 */
	@FieldUnique(message = "业务类型已存在")
	private String bizType;
	
	/**
	 * 允许上传的文件类型(mine-type标准)，为空时不限制类型
	 */
	private String fileTypeLimit;
	
	/**
	 * 允许上传的文件大小(kb)，为空时不限制大小
	 */
	private Long fileSizeLimit;
	
	/**
	 * 服务器存储文件的路径
	 */
	private String path;
	
	/**
	 * 状态, 1启用, 0禁用
	 */
	private String status;

	/**
	 * 存储桶名
	 */
	private String bucketName;

	/**
	 * 创建时间
	 */
	@TableField(fill = FieldFill.INSERT)
	private Date createdAt;
	
	/**
	 * 更新时间
	 */
	@TableField(fill = FieldFill.UPDATE)
	private Date updatedAt;
	
	/**
	 * 更新者用户名
	 */
	@TableField(fill = FieldFill.UPDATE)
	private String updatedBy;
	
	/**
	 * 创建者用户名
	 */
	@TableField(fill = FieldFill.INSERT)
	private String createdBy;

	@TableField(fill = FieldFill.INSERT)
	private Long createdUid;
	
	/**
	 * 备注
	 */
	private String remark;

	public static LambdaQueryWrapper<FileConfig> lqw() {
		return Wrappers.lambdaQuery();
	}

	public String getPath() {
		return StringUtils.isEmpty(this.path) ? "" : this.path;
	}
}
